// utils/articles-data.js
// 文章数据管理模块

// 所有文章数据
const allArticles = [
  // 原index页面文章
  {
    id: 1,
    author: {
      id: 4,
      name: '英语达人小李',
      avatar: '/images/avatar.png'
    },
    title: '如何快速记忆英语单词',
    content: '分享一些高效记忆单词的方法，包括词根词缀法、联想记忆法、情景记忆法等。这些方法能够帮助大家更好地掌握英语词汇，提高学习效率分享一些高效记忆单词的方法，包括词根词缀法、联想记忆法、情景记忆法等。这些方法能够帮助大家更好地掌握英语词汇，提高学习效率分享一些高效记忆单词的方法，包括词根词缀法、联想记忆法、情景记忆法等。这些方法能够帮助大家更好地掌握英语词汇，提高学习效率分享一些高效记忆单词的方法，包括词根词缀法、联想记忆法、情景记忆法等。这些方法能够帮助大家更好地掌握英语词汇，提高学习效率...',
    fullContent: '分享一些高效记忆单词的方法，包括词根词缀法、联想记忆法、情景记忆法等。这些方法能够帮助大家更好地掌握英语词汇，提高学习效率。\n\n## 1. 词根词缀法\n通过学习常见的词根和词缀，可以快速推断出新单词的含义。比如：\n- pre-（前缀）表示"在...之前"\n- -able（后缀）表示"可以...的"\n- predict = pre + dict（说） = 预言，预测\n\n## 2. 联想记忆法\n将新单词与已知的事物或概念建立联系，形成生动的记忆场景：\n- ambulance（救护车）→ 联想"俺不能死"的谐音\n- economy（经济）→ 联想"依靠农民"的谐音\n\n## 3. 情景记忆法\n将单词放在具体的语言环境中记忆：\n- 通过阅读文章、看电影、听歌曲等方式\n- 在真实语境中理解和使用单词\n\n## 4. 重复记忆法\n根据艾宾浩斯遗忘曲线，制定科学的复习计划：\n- 第1天：学习新单词\n- 第2天：第一次复习\n- 第7天：第二次复习\n- 第30天：第三次复习\n\n## 5. 多样化记忆法\n使用多种感官来加强记忆：\n- 视觉：制作单词卡片，使用颜色标记\n- 听觉：听单词发音，练习跟读\n- 触觉：手写单词，加深印象\n\n## 6. 语境记忆法\n在真实语境中学习和使用单词：\n- 阅读英文文章和小说\n- 观看英文电影和电视剧\n- 参与英语对话和讨论\n\n掌握这些方法，相信大家的单词记忆效率会有显著提升！记住，学习语言是一个持续的过程，需要坚持和耐心。',
    publishTime: '2小时前',
    images: ['/images/article.jpg'],
    sharedWord: {
      word: 'efficient',
      meaning: 'adj. 高效的，有效率的'
    },
    tags: ['学习方法', '单词记忆'],
    likeCount: 1,
    commentCount: 15,
    isLiked: false,
    isFollowed: false
  },
  {
    id: 2,
    author: {
      id: 5,
      name: '口语老师Amy',
      avatar: '/images/avatar.png'
    },
    title: '日常口语表达分享',
    content: '今天给大家分享一些实用的日常口语表达，让你的英语更加地道自然。这些表达在日常交流中非常常见，掌握它们能够大大提升你的口语水平...',
    fullContent: '今天给大家分享一些实用的日常口语表达，让你的英语更加地道自然。这些表达在日常交流中非常常见，掌握它们能够大大提升你的口语水平。\n\n## 常用问候语\n- What\'s up? 怎么样？\n- How\'s it going? 最近怎么样？\n- Long time no see! 好久不见！\n- What\'s new? 有什么新鲜事吗？\n- How have you been? 你最近怎么样？\n\n## 日常邀请\n- How about we grab a bite to eat? 我们去吃点东西怎么样？\n- Would you like to hang out? 你想一起出去玩吗？\n- Let\'s catch up sometime. 我们找时间聊聊吧。\n- Are you free this weekend? 你这周末有空吗？\n- Do you want to join us? 你想加入我们吗？\n\n## 表达意见\n- I think... 我认为...\n- In my opinion... 在我看来...\n- As far as I\'m concerned... 就我而言...\n- From my perspective... 从我的角度来看...\n- I believe that... 我相信...\n\n## 礼貌用语\n- Excuse me. 不好意思。\n- I beg your pardon? 你能再说一遍吗？\n- Thank you so much. 非常感谢。\n- I\'m sorry to bother you. 不好意思打扰你。\n- Could you please help me? 你能帮我一下吗？\n\n## 日常感叹\n- That\'s awesome! 太棒了！\n- No way! 不会吧！\n- You\'re kidding! 你在开玩笑吧！\n- That\'s unbelievable! 太不可思议了！\n- What a coincidence! 真巧！\n\n记住，口语练习贵在坚持，多说多练才能真正提高！建议大家每天练习30分钟，坚持一个月就会看到明显的进步。',
    publishTime: '5小时前',
    sharedSentence: 'How about we grab a bite to eat? 我们去吃点东西怎么样？',
    tags: ['口语练习', '日常表达'],
    likeCount: 2,
    commentCount: 10,
    isLiked: false,
    isFollowed: false
  },
  {
    id: 3,
    author: {
      id: 6,
      name: '考试专家王老师',
      avatar: '/images/avatar.png'
    },
    title: '英语阅读理解解题技巧',
    content: '阅读理解是英语考试中的重点题型，掌握正确的解题技巧能够有效提高答题准确率。今天分享几个实用的阅读理解解题方法...',
    fullContent: '阅读理解是英语考试中的重点题型，掌握正确的解题技巧能够有效提高答题准确率。今天分享几个实用的阅读理解解题方法。\n\n## 1. 先看题目，再读文章\n在阅读文章之前，先浏览一遍所有题目，了解需要重点关注的信息。这样可以：\n- 带着问题去阅读，提高效率\n- 避免漫无目的地阅读\n- 快速定位关键信息\n- 节省阅读时间\n\n## 2. 关注首尾段和每段首句\n文章的主旨通常在：\n- 首段：介绍主题，提出观点\n- 尾段：总结全文，重申主题\n- 每段首句：段落主题句，概括段意\n- 转折句：表明作者态度变化\n\n## 3. 标记关键词\n在阅读过程中标记：\n- 时间、地点、人物名称\n- 数据、百分比、统计信息\n- 转折词（but, however, nevertheless, yet）\n- 因果词（because, therefore, as a result, due to）\n- 强调词（especially, particularly, mainly）\n\n## 4. 排除法解题\n对于选择题：\n- 先排除明显错误的选项\n- 比较剩余选项的细微差别\n- 回到原文验证答案\n- 选择最符合文意的选项\n\n## 5. 注意陷阱选项\n常见陷阱：\n- 偷换概念：改变原文关键词\n- 过度推理：超出文章内容范围\n- 绝对化表述：使用all, never, always等绝对词\n- 细节错误：颠倒因果关系或时间顺序\n\n## 6. 时间管理策略\n- 快速浏览：1-2分钟了解文章大意\n- 仔细阅读：重点关注题目相关段落\n- 答题检查：留出时间检查答案\n\n多练习，多总结，相信大家的阅读理解能力一定会有所提升！建议每天练习2-3篇阅读理解，坚持一个月就会看到明显进步。',
    publishTime: '1天前',
    sharedQuestion: 'What is the main idea of the passage?\nA. How to improve reading skills\nB. The importance of vocabulary\nC. Reading comprehension strategies\nD. All of the above',
    tags: ['考试技巧', '阅读理解'],
    likeCount: 3,
    commentCount: 8,
    isLiked: false,
    isFollowed: false
  },
  // 原community页面文章
  {
    id: 4,
    author: {
      id: 1,
      name: '语法小助手',
      avatar: '/images/avatar.png'
    },
    title: '英语时态详解',
    content: '英语时态是学习英语语法的重要基础，本文详细解析了英语的12种基本时态，包括一般现在时、一般过去时、现在进行时等，帮助大家更好地理解和掌握英语时态的使用方法...',
    fullContent: '英语时态是学习英语语法的重要基础，本文详细解析了英语的12种基本时态，包括一般现在时、一般过去时、现在进行时等，帮助大家更好地理解和掌握英语时态的使用方法。\n\n## 一般时态\n\n### 1. 一般现在时\n- 用法：表示经常发生的动作或存在的状态\n- 结构：主语 + 动词原形/第三人称单数\n- 例句：I study English every day.\n\n### 2. 一般过去时\n- 用法：表示过去发生的动作或存在的状态\n- 结构：主语 + 动词过去式\n- 例句：I studied English yesterday.\n\n### 3. 一般将来时\n- 用法：表示将来要发生的动作或存在的状态\n- 结构：will + 动词原形 / be going to + 动词原形\n- 例句：I will study English tomorrow.\n\n## 进行时态\n\n### 4. 现在进行时\n- 用法：表示现在正在进行的动作\n- 结构：be + 动词-ing\n- 例句：I am studying English now.\n\n### 5. 过去进行时\n- 用法：表示过去某时正在进行的动作\n- 结构：was/were + 动词-ing\n- 例句：I was studying English at 8 o\'clock yesterday.\n\n### 6. 将来进行时\n- 用法：表示将来某时正在进行的动作\n- 结构：will be + 动词-ing\n- 例句：I will be studying English at this time tomorrow.\n\n## 完成时态\n\n### 7. 现在完成时\n- 用法：表示过去发生对现在有影响的动作\n- 结构：have/has + 过去分词\n- 例句：I have studied English for three years.\n\n### 8. 过去完成时\n- 用法：表示过去的过去发生的动作\n- 结构：had + 过去分词\n- 例句：I had studied English before I came here.\n\n掌握这些时态，你的英语语法基础就会非常扎实！',
    publishTime: '3小时前',
    images: [],
    sharedSentence: 'I have been studying English for three years. 我学英语已经三年了。（现在完成进行时）',
    tags: ['语法学习', '时态'],
    likeCount: 4,
    commentCount: 8,
    isLiked: false,
    isFollowed: false
  },
  {
    id: 5,
    author: {
      id: 2,
      name: '词汇大师',
      avatar: '/images/avatar.png'
    },
    title: '高频词汇分享',
    content: '分享一些在日常交流和考试中经常出现的高频词汇，掌握这些词汇能够大大提升你的英语表达能力和阅读理解能力。这些词汇都是精心挑选的...',
    fullContent: '分享一些在日常交流和考试中经常出现的高频词汇，掌握这些词汇能够大大提升你的英语表达能力和阅读理解能力。这些词汇都是精心挑选的。\n\n## 形容词类\n\n### 1. comprehensive /ˌkɒmprɪˈhensɪv/\n- 词性：形容词\n- 含义：全面的，综合的\n- 例句：We need a comprehensive plan.\n- 同义词：complete, thorough\n\n### 2. significant /sɪɡˈnɪfɪkənt/\n- 词性：形容词\n- 含义：重要的，显著的\n- 例句：This is a significant improvement.\n- 同义词：important, notable\n\n### 3. efficient /ɪˈfɪʃənt/\n- 词性：形容词\n- 含义：高效的，有效率的\n- 例句：She is an efficient worker.\n- 同义词：effective, productive\n\n## 动词类\n\n### 4. establish /ɪˈstæblɪʃ/\n- 词性：动词\n- 含义：建立，确立\n- 例句：They established a new company.\n- 同义词：found, set up\n\n### 5. analyze /ˈænəlaɪz/\n- 词性：动词\n- 含义：分析，解析\n- 例句：We need to analyze the data.\n- 同义词：examine, study\n\n### 6. demonstrate /ˈdemənstreɪt/\n- 词性：动词\n- 含义：证明，演示\n- 例句：The experiment demonstrates the theory.\n- 同义词：show, prove\n\n## 名词类\n\n### 7. perspective /pəˈspektɪv/\n- 词性：名词\n- 含义：观点，角度\n- 例句：From my perspective, this is correct.\n- 同义词：viewpoint, angle\n\n### 8. strategy /ˈstrætədʒi/\n- 词性：名词\n- 含义：策略，战略\n- 例句：We need a new marketing strategy.\n- 同义词：plan, approach\n\n记住，词汇积累需要持之以恒，建议每天学习5-10个新单词！',
    publishTime: '6小时前',
    sharedWord: {
      word: 'comprehensive',
      meaning: 'adj. 全面的，综合的'
    },
    tags: ['词汇积累', '高频词汇'],
    likeCount: 5,
    commentCount: 12,
    isLiked: false,
    isFollowed: false
  },
  {
    id: 6,
    author: {
      id: 3,
      name: '我关注的老师',
      avatar: '/images/avatar.png'
    },
    title: '学员学习心得分享',
    content: '感谢老师的指导，我的英语水平有了显著提升。在这里分享一些学习心得和方法，希望能帮助到其他同学...',
    fullContent: '感谢老师的指导，我的英语水平有了显著提升。在这里分享一些学习心得和方法，希望能帮助到其他同学。\n\n## 我的学习历程\n\n我从零基础开始学习英语，经过一年的努力，现在已经能够：\n- 流利地进行日常对话\n- 阅读英文原版小说\n- 观看无字幕的英文电影\n- 参加英语角活动\n\n## 学习方法分享\n\n### 1. 制定学习计划\n- 每天固定学习时间（早上1小时，晚上1小时）\n- 周末进行复习和总结\n- 每月制定学习目标\n\n### 2. 多样化学习材料\n- 教科书：系统学习语法和词汇\n- 英文歌曲：提高语感和发音\n- 英文电影：学习地道表达\n- 英语新闻：了解时事和文化\n\n### 3. 实践应用\n- 参加英语角活动\n- 与外国朋友交流\n- 写英文日记\n- 做英文笔记\n\n### 4. 保持兴趣\n- 选择感兴趣的主题学习\n- 设置小目标，及时奖励自己\n- 记录学习进步\n- 与同学互相鼓励\n\n## 遇到的困难及解决方法\n\n### 困难1：单词记不住\n- 解决方法：使用艾宾浩斯记忆曲线，定期复习\n- 制作单词卡片，随时复习\n- 在语境中学习单词\n\n### 困难2：语法复杂\n- 解决方法：先掌握基本语法规则\n- 通过大量练习巩固\n- 多读多写，培养语感\n\n### 困难3：口语不流利\n- 解决方法：每天坚持朗读\n- 模仿标准发音\n- 多与他人交流练习\n\n## 给大家的建议\n\n1. **坚持是关键**：学习语言需要长期坚持，不能三天打鱼两天晒网\n2. **兴趣第一**：找到自己感兴趣的学习方式和材料\n3. **勇于开口**：不要害怕犯错，多说多练\n4. **及时复习**：新学的知识要及时复习巩固\n5. **保持信心**：相信自己一定能够学好英语\n\n希望我的经验能够帮助到正在学习英语的朋友们。加油！',
    publishTime: '1天前',
    tags: ['学习心得', '经验分享'],
    likeCount: 6,
    commentCount: 20,
    isLiked: false,
    isFollowed: true
  }
];

/**
 * 获取所有文章数据（包括用户发布的文章）
 * @returns {Array} 所有文章数组
 */
function getAllArticles() {
  // 获取用户发布的文章
  const userArticles = wx.getStorageSync('userPublishedArticles') || [];
  
  // 合并预设文章和用户文章，用户文章在前
  const combinedArticles = [...userArticles, ...allArticles];
  
  return combinedArticles;
}

/**
 * 根据ID获取文章（包括用户发布的文章）
 * @param {number|string} articleId 文章ID
 * @returns {Object|null} 文章对象或null
 */
function getArticleById(articleId) {
  // 获取所有文章（包括用户发布的）
  const combinedArticles = getAllArticles();
  
  // 支持数字和字符串类型的ID
  const targetId = typeof articleId === 'string' ? articleId : String(articleId);
  
  return combinedArticles.find(article => 
    String(article.id) === targetId
  ) || null;
}

/**
 * 获取点赞数最高的前N篇文章
 * @param {number} count 获取数量，默认3篇
 * @returns {Array} 文章数组
 */
function getTopLikedArticles(count = 3) {
  return [...allArticles]
    .sort((a, b) => (b.likeCount || 0) - (a.likeCount || 0))
    .slice(0, count);
}

/**
 * 根据关注的作者ID获取文章
 * @param {Array} followedAuthorIds 关注的作者ID数组
 * @returns {Array} 关注作者的文章数组
 */
function getArticlesByFollowedAuthors(followedAuthorIds) {
  if (!followedAuthorIds || followedAuthorIds.length === 0) {
    return [];
  }
  
  return allArticles.filter(article => 
    followedAuthorIds.includes(article.author.id)
  );
}

/**
 * 更新文章的关注状态
 * @param {Array} articles 文章数组
 * @param {Array} followedAuthors 关注的作者数组
 * @returns {Array} 更新后的文章数组
 */
function updateArticlesFollowStatus(articles, followedAuthors = []) {
  return articles.map(article => ({
    ...article,
    isFollowed: followedAuthors.some(author => author.id === article.author.id)
  }));
}

/**
 * 搜索文章
 * @param {string} keyword 搜索关键词
 * @param {Array} articles 文章数组，默认为所有文章
 * @returns {Array} 搜索结果数组
 */
function searchArticles(keyword, articles = allArticles) {
  if (!keyword || !keyword.trim()) {
    return articles;
  }
  
  const searchTerm = keyword.toLowerCase().trim();
  
  return articles.filter(article => 
    article.title.toLowerCase().includes(searchTerm) ||
    article.content.toLowerCase().includes(searchTerm) ||
    article.author.name.toLowerCase().includes(searchTerm) ||
    article.tags.some(tag => tag.toLowerCase().includes(searchTerm))
  );
}

module.exports = {
  getAllArticles,
  getArticleById,
  getTopLikedArticles,
  getArticlesByFollowedAuthors,
  updateArticlesFollowStatus,
  searchArticles
}; 